본문으로 건너뛰기

02 - 암호화 및 복호화

1. 암호화 접근 방식

  • VASP 간 통신 시, 사용자 개인정보는 반드시 종단 간 암호화되어야 합니다.
  • CodeVASP로 요청을 전송하기 전에, VASP는 Travel Rule 데이터를 암호화해야 합니다.
  • HTTPS가 기본 보안을 보장하지만, 개인정보는 페이로드 객체의 일부로 추가 암호화되어 참여하는 VASP만이 이를 복호화할 수 있습니다. (다른 프로토콜과의 상호 운용 시에도 동일하게 적용됩니다.)

두 가지 암호화 방법 중 선택하실 수 있습니다.

  • 옵션1. CodeVASP에서 제공하는 Cipher 모듈 사용 → 2. Cipher로 이동하십시오
  • 옵션2. 사용자 정의 암호화 → 3. 사용자 정의 암호화로 이동하십시오

2. Cipher 모듈

  • Cipher는 CodeVASP의 암호화 모듈로, Docker 이미지로 배포됩니다.
  • [02-1. CodeVASP-Cipher 서버 모듈 가이드]를 읽고 가이드의 지침을 따라 주십시오.
  • CodeVASP API 요청에는 Cipher 응답을 그대로 사용하십시오.

3. 사용자 정의 암호화

  • Cipher를 사용하지 않고 암호화 및 복호화를 수행하는 경우 샘플 코드를 참조하십시오.
  • 파일을 다운로드하려면 링크를 클릭하십시오.

4. API별 정보

  • 요청 및 응답 시 암호화가 필요한 API에 대해 설명합니다.
  • 모든 요청에는 서명이 필요합니다.
API요청응답
VASP 목록 검색
공개 키 검색
코인별 네트워크
지갑으로 VASP 검색 요청
지갑으로 VASP 검색 결과
XX
디지털 자산 주소 검색OX
자산 이전 승인OO
이전 결과 신고 (TX Hash)
거래 상태 검색
이전 완료
TXID로 VASP 검색 요청
TXID로 VASP 검색 결과
XX
자산 이전 데이터 요청OO

5. 알고리즘 라이브러리

5-1. 권장 라이브러리

  • libsodium (네트워킹 및 암호화 라이브러리)
  • 공개 키 암호화 – 인증된 암호화

5-2. 알고리즘

5-3. 키 쌍

  • 서명 키: Ed25519 알고리즘을 사용하여 디지털 서명을 생성하는 데 사용되는 개인 키입니다. CodeVASP 프로토콜에서는 이를 개인 키라고 합니다.
  • 검증 키: 디지털 서명 생성에 사용되는 Ed25519 서명 키에 대응하는 공개 키입니다. CodeVASP 프로토콜에서는 이를 공개 키라고 합니다.

6. 키 쌍 생성

6-1. 대시보드에서 생성

저희 대시보드에 로그인하시면, 개발 - 환경 정보에서 생성하실 수 있습니다.

6-2. 제공된 샘플 코드 사용

from base64 import b64encode

from nacl.signing import SigningKey

signing_key = SigningKey.generate()
verify_key = signing_key.verify_key

# use signing key as private key
private_key_b64 = b64encode(bytes(signing_key)).decode('utf-8')

# use verify key as public key
public_key_b64 = b64encode(bytes(verify_key)).decode('utf-8')

print("Key generation complete.")
print("sk: " + private_key_b64)
print("pk: " + public_key_b64)


  • 개인 키를 분실하시면, 키 쌍을 재생성해야 합니다.
  • 대시보드의 개발 - 환경 정보에 공개 키를 입력하십시오.

7. 암호화 예시

7-1. 원본 메시지

{
"currency": "XRP",
"payload": {
"ivms101": {
"Beneficiary": {
"accountNumber": [
"rHcFoo6a9qT5NHiVn1THQRhsEGcxtYCV4d:memo or tag"
]
}
}
}
}
  1. 암호화 대상은 payload 객체이며, {"ivms101": ...} 부분이 암호화됩니다.
  2. 송신측 VASP A는 수신측 VASP B의 공개 키와 자신(VASP A)의 개인 키를 사용하여 암호화합니다.
  3. payload 값은 암호화된 결과를 base64로 인코딩하여 덮어씁니다.
  4. payload 타입이 객체에서 문자열로 변경됩니다.

7-2. 암호화된 메시지 예시

{
"currency": "xrp",
"payload": "base64 encoded string"
}
  • 수신자 VASP는 송신자 VASP의 공개 키와 수신자 VASP의 개인 키를 입력하여 복호화를 수행합니다.

8. 서명 생성 규칙

  • 헤더에 포함된 서명은 다음 세 값을 바이트 배열로 연결하고 송신자 VASP의 개인 키(서명 키)로 서명하여 생성됩니다:
    1. X-Code-Req-Datetime
    2. Body 문자열
    3. X-Code-Req-Nonce
  • CodeVASP 서버는 등록된 공개 키를 사용하여 서명을 검증합니다.

9. 참고 사항

  • Python, Java, JavaScript, Go로 제공되는 샘플 코드
  • 공식 채널을 통한 지원 제공